import lableImg from '../images/label.png';
import { resolve } from 'url';
import { rejects } from 'assert';

function ComplexOverlay(point, text, mouseoverText){
    this._point = point;
    this._text = text;
    this._overText = mouseoverText;
}
ComplexOverlay.prototype = new BMap.Overlay();
ComplexOverlay.prototype.initialize = function(map){
    this._map = map;
    var div = this._div = document.createElement("div");
    div.style.position = "absolute";
    div.style.zIndex = BMap.Overlay.getZIndex(this._point.lat);
    div.style.backgroundColor = "#EE5D5B";
    //div.style.border = "1px solid #BC3B3A";
    div.style.color = "white";
    div.style.height = "24px";
    div.style.padding = "2px 10px";
    div.style.borderRadius = "5px";
    div.style.lineHeight = "24px";
    div.style.whiteSpace = "nowrap";
    div.style.MozUserSelect = "none";
    div.style.fontSize = "12px"
    var span = this._span = document.createElement("span");
    div.appendChild(span);
    span.appendChild(document.createTextNode(this._text));      
    var that = this;

    var arrow = this._arrow = document.createElement("div");
    //arrow.style.background = "url(http://map.baidu.com/fwmap/upload/r/map/fwmap/static/house/images/label.png) no-repeat";
    // console.log('img->',lableImg);
    arrow.style.background = "url("+lableImg+") no-repeat";
    arrow.style.position = "absolute";
    arrow.style.width = "11px";
    arrow.style.height = "10px";
    arrow.style.top = "22px";
    arrow.style.left = "10px";
    arrow.style.overflow = "hidden";
    div.appendChild(arrow);

    div.onmouseover = function(){
        this.style.backgroundColor = "#6BADCA";
        this.style.borderColor = "#0000ff";
        this.getElementsByTagName("span")[0].innerHTML = that._overText;
        arrow.style.backgroundPosition = "0px -20px";
    }

    div.onmouseout = function(){
        this.style.backgroundColor = "#EE5D5B";
        this.style.borderColor = "#BC3B3A";
        this.getElementsByTagName("span")[0].innerHTML = that._text;
        arrow.style.backgroundPosition = "0px 0px";
    }

    map.getPanes().labelPane.appendChild(div);

    return div;
}
ComplexOverlay.prototype.draw = function(){
    var map = this._map;
    var pixel = map.pointToOverlayPixel(this._point);
    this._div.style.left = pixel.x - parseInt(this._arrow.style.left) + "px";
    this._div.style.top  = pixel.y - 30 + "px";
}
let geoc = new BMap.Geocoder();
const Geocoder = {

    getLocationBylnglat(lng,lat){

       return this.getLocation(new BMap.Point(lng,lat));
    },
    getBmapPoint(address){
        return new Promise((resolve,reject)=>{
            try{
                geoc.getPoint(address, function(point){
                    resolve(point);
                });
            }catch(e){
                reject();
            }
        });
    },
    getLocation(pt){
      

        return new Promise((resolve,reject)=>{

            try{
                geoc.getLocation(pt, function(rs){
                    var addComp = rs.addressComponents;
                    resolve(addComp);
                });
            }catch(e){
                reject();
            }
            
        });
    }

}
export {
    ComplexOverlay,
    Geocoder
}